草庐IT

Android PlusOneButton 不初始化

全部标签

c++ - 'mapped_type' std::map 错误的初始化没有匹配的构造函数

我有一个名为“Card”的类,我试图将它的一些对象存储在std::map中卡片.hpp:classCard{public:enumValueType{NOVALUE,ACE};enumFaceType{NOFACE,CLUBS};Card(constValueType&_value,constFaceType&_face);Card(constCard&_card);private:ValueTypem_value;FaceTypem_face;};以下是我存储和访问它的方式:甲板.hpp:#includeclassCard;classDeck{public:Deck();std::s

c++ - 在初始化列表中使用复杂函数来初始化 const 成员是一个好的设计吗?

最近我在看一个类(class)的旧烂摊子......长话短说,如果一个成员是常量,将有助于线程安全。但问题是member是在ctor中初始化的,而且是非平凡的构造。所以我在考虑为那个成员创建一个特殊的初始化函数。这是一个好的决定吗?super简单的小例子(真正的代码充满了条件:)和try-s):classComplexInitList{std::pairinit_pair(constintfirst,constintsecond){if((first==0)||(second==0))throwstd::invalid_argument("divby0");returnstd::mak

c++ - 如何避免丢失自动生成的初始化列表构造函数?

我喜欢新的自动生成的大括号括起来的初始值设定项!如果我开始声明自己的构造函数,有什么方法可以避免丢失它们?代码#includestructFoo{inti;std::strings;//Foo(){}//Ilosemybrace-enclosedinitializersifIuncommentthisline};intmain(intargc,char*argv[]){Foof{1,"bar"};//havingtheoptiontodothisisgoodreturn0;}回答鉴于juanchopanza'sanswerbelow,看起来我必须满足aggregates的冗长规则.但我

c++ - 如何从 vector char 初始化字符串流

目前我正在使用一个boostchar数组boost::arrayreceived_data;std::istringstreamss_(received_data.data());但是如果我的received_data是std::vectorreceived_data(512);怎么办?然后我如何将这些数据发送到我的std::istringstreamss_? 最佳答案 istringstream接受一个字符串,一个字符串可以由两个字符迭代器组成,像这样:istringstreamiss(string(v.begin(),v.end

具有复杂赋值的c++构造函数初始化列表

假设我想要一个接收一些参数的构造函数,并且使用这些参数我可以计算它的成员变量的值。除了成员变量的值不是来自参数的简单赋值。它们需要创建其他对象并转换值,然后才能将它们用作成员变量的值。要塞进一个初始化列表就太麻烦了。效率也非常低,因为您无法创建变量并重用它们,因此您将不得不复制代码(并制作同一对象的多个拷贝)以适应初始化列表中的所有代码。另一种选择是不使用初始化列表,让默认构造函数被调用,然后用简洁的计算覆盖构造函数中的值。如果类没有默认构造函数怎么办?如何巧妙地做到这一点?/*aclasswithoutadefaultconstructor*/classA{public:Bx1Bx2

c++ - 默认构造函数是否零初始化成员数组变量?

当我检查以下程序及其输出时,我发现通过返回值获取FrameA对象非常困惑:当定义一个空构造函数时,成员数组字段保持未初始化状态让编译器生成ctor时,成员数组字段初始化为全0autoa=f();//f()-->returnA();给出以下SSCCE#include#include#include#includeusingnamespacestd;constintMAX=9999999;structFrameA{//FrameA(){}//FrameA(constFrameA&v){memcpy(data,v.data,sizeof(data));}chardata[1000];};Fr

c++ - 初始化引用

虽然我认为我理解C++中的rvalue和lvalue语义,但我似乎一遍又一遍地踩着奇怪的例子向我证明我不知道深蹲。但是有两个非常简单和基本的,我不明白它们是如何工作的。在我编译它们之前,我认为没有一个是可以的,在我看到(1)可以工作之后,我认为(2)也可以。但是,(1)有效,(2)无效:(1)conststd::string&s="asd";这里发生了什么?我的猜测是,一个临时的conststring对象是由"asd"构造的,然后s被绑定(bind)到那个临时对象。但是临时对象不会在这一行之后立即被销毁,所以我们会留下一个无效的引用吗?当我删除const限定符时:(2)std::str

c++ - OpenSceneGraph 将相机设置在初始位置

我是第一次使用OpenSceneGraph,我有点迷茫,因为文档真的不是那么清楚...所以,我有这段代码可以加载一个带有房子的obj文件,并且我已经淹没了一个小盒子,我希望“人”所在的位置。所以现在,我不想把那个盒子放在那里,而是想把相机放在那里,看着前方,稍后我会用一些东西来移动固定相机周围的地形,这样看起来相机在移动,但地形在移动。所以,这是我的代码:intmain(){osgViewer::Viewerviewer;viewer.setUpViewInWindow(0,0,800,800);osg::ref_ptrroot(newosg::Group);osg::Node*ter

c++ - 成员初始化中表达式的求值是否相对于彼此排序?

具体来说,假设我有:structX{X(inti){cout我知道成员的构造函数保证按照它们在struct中定义的顺序被调用,所以0将在1之前打印。但是如何评价他们的论点呢?是否保证:f0g1?或者,也许,fg01和gf01也是有效输出吗?对标准的引用表示赞赏。 最佳答案 在C++11draftstandard中,每个成员初始值设定项都是一个完整表达式,因此所有副作用都必须在下一个评估之前生效。12.6.2初始化基和成员段7说:[...]Theinitializationperformedbyeachmem-initializerc

c++ - c++1y 是否允许从派生类对基类变量进行类内初始化?

取而代之的是:classbase{protected:base(intvalue):member{value}{}intmember=0;};classderived_1:publicbase{public:derived_1():base{1}{}};classderived_2:publicbase{public:derived_2():base{2}{}};这会很有用:classbase{protected:intmember=0;//Defaultvalue};classderived_1:publicbase{base::member=1;//Insteadofpassing